@echo off
setlocal enabledelayedexpansion

REM MCP-Link 统一部署脚本 (Windows版本)
REM 解决构建路径不一致和配置错误问题

echo [INFO] 开始 MCP-Link 统一部署流程...

REM 检查必要工具
echo [INFO] 检查部署前置条件...
where docker >nul 2>nul
if errorlevel 1 (
    echo [ERROR] Docker 未安装或不在 PATH 中
    exit /b 1
)

where npm >nul 2>nul
if errorlevel 1 (
    echo [ERROR] npm 未安装或不在 PATH 中
    exit /b 1
)
echo [SUCCESS] 前置条件检查通过

REM 清理旧的构建文件
echo [INFO] 清理旧的构建文件...
if exist "frontend\dist" (
    rmdir /s /q "frontend\dist"
    echo [INFO] 已清理 frontend\dist
)
if exist "frontend\build" (
    rmdir /s /q "frontend\build"
    echo [INFO] 已清理 frontend\build
)
echo [SUCCESS] 构建文件清理完成

REM 构建前端
echo [INFO] 开始构建前端...
cd frontend

REM 安装依赖（如果需要）
if not exist "node_modules" (
    echo [INFO] 安装前端依赖...
    npm install
    if errorlevel 1 (
        echo [ERROR] 前端依赖安装失败
        exit /b 1
    )
)

REM 构建项目
echo [INFO] 构建 Vue 项目...
npm run build
if errorlevel 1 (
    echo [ERROR] 前端构建失败
    exit /b 1
)

REM 验证构建结果
if not exist "dist" (
    echo [ERROR] 前端构建失败：dist 目录不存在
    exit /b 1
)

if not exist "dist\index.html" (
    echo [ERROR] 前端构建失败：index.html 不存在
    exit /b 1
)

REM 检查是否包含最新代码
findstr /r /c:"查看日志" dist\*.* >nul 2>nul
if errorlevel 1 (
    echo [ERROR] 前端构建失败：未包含最新的日志功能代码
    exit /b 1
)

cd ..
echo [SUCCESS] 前端构建完成并验证通过

REM 验证配置文件
echo [INFO] 验证 Docker Compose 配置...
findstr /c:"./frontend/build:" docker-compose.yml >nul 2>nul
if not errorlevel 1 (
    echo [ERROR] Docker Compose 配置错误：仍在使用 build 目录
    echo [INFO] 正在自动修复配置...
    powershell -Command "(Get-Content docker-compose.yml) -replace './frontend/build:', './frontend/dist:' | Set-Content docker-compose.yml"
    echo [SUCCESS] 配置已自动修复
)

REM 验证配置正确性
findstr /c:"./frontend/dist:" docker-compose.yml >nul 2>nul
if errorlevel 1 (
    echo [ERROR] Docker Compose 配置验证失败
    exit /b 1
)
echo [SUCCESS] 配置验证通过

REM 构建和启动服务
echo [INFO] 停止现有服务...
docker compose down

echo [INFO] 构建并启动服务...
docker compose up --build -d
if errorlevel 1 (
    echo [ERROR] 服务启动失败
    exit /b 1
)

REM 等待服务启动
echo [INFO] 等待服务启动...
timeout /t 10 /nobreak >nul

REM 验证服务状态
echo [INFO] 验证服务状态...
docker compose ps | findstr "Up" >nul 2>nul
if errorlevel 1 (
    echo [ERROR] 服务启动失败
    docker compose logs
    exit /b 1
)
echo [SUCCESS] 服务启动成功

REM 验证部署结果
echo [INFO] 验证部署结果...
echo [INFO] 验证前端代码更新...
docker compose exec frontend grep -r "查看日志" /usr/share/nginx/html/ >nul 2>nul
if not errorlevel 1 (
    echo [SUCCESS] 前端代码验证通过：包含最新的日志功能
) else (
    echo [ERROR] 前端代码验证失败：未包含最新功能
    exit /b 1
)

REM 检查服务可访问性
echo [INFO] 验证服务可访问性...
curl -f http://localhost:3000 >nul 2>nul
if not errorlevel 1 (
    echo [SUCCESS] 前端服务可访问 (http://localhost:3000)
) else (
    echo [WARNING] 前端服务不可访问
)

curl -f http://localhost:5001/api/v1/tools/ >nul 2>nul
if not errorlevel 1 (
    echo [SUCCESS] 管理API可访问 (http://localhost:5001)
) else (
    echo [WARNING] 管理API不可访问
)

curl -f http://localhost:5050/logs >nul 2>nul
if not errorlevel 1 (
    echo [SUCCESS] MCP服务可访问 (http://localhost:5050)
) else (
    echo [WARNING] MCP服务不可访问
)

REM 显示部署信息
echo [SUCCESS] 🎉 MCP-Link 部署完成！
echo.
echo 📋 服务访问地址：
echo   • 前端管理界面: http://localhost:3000
echo   • 管理API:      http://localhost:5001
echo   • MCP服务:      http://localhost:5050
echo   • 日志API:      http://localhost:5050/logs
echo.
echo 🔧 常用命令：
echo   • 查看服务状态: docker compose ps
echo   • 查看日志:     docker compose logs
echo   • 停止服务:     docker compose down
echo   • 重启服务:     docker compose restart
echo.
echo 📊 功能特性：
echo   ✅ 调用透明化日志系统
echo   ✅ 前端日志查看功能
echo   ✅ 敏感信息自动脱敏
echo   ✅ 性能优化索引查询
echo   ✅ 安全配置和速率限制
echo.
echo [SUCCESS] ✨ 部署流程全部完成！

pause